In general, computer applications provide services to a variety of consumers. Often, the separate services provided by a computer application, or even some of the tasks within a single service, are executed by separate work processes. This is especially true for complex computer applications with many consumers like Enterprise Resource Planning (ERP) systems, customer relationships management (CRM) systems, etc. The separate work processes usually run separate instances of a computer application within the same computer environment, e.g., as in an application server. These separate processes run autonomously, e.g., they are isolated from each other in terms of some operations. However, the processes may share some of the resources of the computer system hosting the application server. For example, such resources include processors, volatile memory, database storage, etc.
The running processes of an application server generate various data related to their work. Such data may include consumers' identification, information about consumer requests, services' data, lists of executed operations and tasks, system parameters, etc. This data is necessary for monitoring and evaluating the performance of work processes, and for maintaining statistics required by audits, for instance. Therefore, the work processes of an application server preserve this data in permanent storages. Usually, the data is saved in database tables or file logs. The operation of saving the data could be a very resource consuming task, occupying a lot of processor time and storage space. The performance of a work process could be significantly decreased by these data saving operations, especially when the processes compete for the same storage resource.
The data about the work of the processes of an application server is important, but is not critical for the provided services. In other words, if part of this data is lost for some reason, the work processes will still be able to function as requested by the consumers. Hence, potential data loss due to, for instance, unexpected shut downs, could be neglected. Additionally, this data is very rarely required in raw state. Once stored in a database or a file, the data is aggregated and processed to a predefined condensed structure before being used. For example, a service consumer provides identification information to a work process, such as type of caller application (e.g., ‘Partner Application’, ‘Foreign Application’, and ‘Domestic Application’), an identification number, a username, etc. This information could be combined with service provider information, such as name of the service, the time when the service was called, etc., and stored in a database. However, a manager or an auditor may be interested only in the number of service calls per user in a given time interval. Therefore, it may not be necessary to store all data details directly in the permanent storage.